package com.hzhc.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.hzhc.dto.BaseDto;
import com.hzhc.entity.SysRole;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.multipart.MultipartFile;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 系统用户
 * </p>
 *
 * @author duanhm
 * @since 2019-08-07
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class SysUserVo extends BaseDto implements Serializable {

	private static final long serialVersionUID = 1L;

	private Long id;

	/**
	 * 登入名
	 */
	private String loginname;

	/**
	 * 密码
	 */
	private String password;
	private String realPassword;

	/**
	 * 确认密码
	 */
	private String checkPass;

	/**
	 * 工号
	 */
	private String gonghao;

	/**
	 * 真实姓名
	 */
	private String realname;

	/**
	 * 盐值
	 */
	private String salt;

	/**
	 * 性别 0=保密/1=男/2=女
	 */
	private Integer sex;

	/**
	 * 身份证
	 */
	private String idcard;

	/**
	 * 邮箱
	 */
	private String email;

	/**
	 * 所属机构部门
	 */
	private Long orgId;
	/**
	 * 部门多个Id
	 */
	private List<Integer> orgIds;

	/**
	 * 所属机构部门名称
	 */
	private String orgName;

	/**
	 * 手机号
	 */
	private String mobile;

	/**
	 * 最后登录时间
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private LocalDateTime lastLoginTime;

	/**
	 * 最后登录IP
	 */
	private String lastLoginIp;

	/**
	 * 头像缩略图地址
	 */
	private String avatarUrl;

	/**
	 * 状态 0：禁用 1：正常
	 */
	private Integer status;

	/**
	 * 创建时间
	 */
	private LocalDateTime createTime;
	/**
	 * 角色Id
	 */
	private String roleId;
	/**
	 * 角色多个Id
	 */
	private List<Integer> roleIds;

	/**
	 * 微信角色多个Id
	 */
	private List<Integer> wxRoleIds;

	/**
	 * 角色名称
	 */
	private String roleName;

	/**
	 * 角色名称多个
	 */
	private String roleNameStr;

	private List<SysRole> rolesList;

	/**
	 * 旧密码
	 */
	private String oldpassword;

	/**
	 * 成员类型
	 */
	private String memberType;

	/**
	 * 所属公司id
	 */
	private Long companyId;

	/**
	 * 所属公司名字
	 */
	private String companyName;

	/**
	 * 用户会员登陆标记 1 pc端登陆 2移动端登陆
	 */
	private Integer userMemberFlag;

	/**
	 * token
	 */
	private String token;

	/**
	 * 用户职级
	 */
	private String userLevel;

	/**
	 * 专业/工种
	 */
	private String position;

	/**
	 * 岗位
	 */
	private Long sentry;
	private String sentryName;

	/**
	 * 部门
	 */
	private Long section;
	private String sectionName;

	/**
	 * 入职时间
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private LocalDateTime entryTime;

	/**
	 * 出生年月
	 */
	private String birthday;

	/**
	 * 年龄
	 */
	private int age;

	/**
	 * 家庭联系方式
	 */
	private String telphone;

	List<MultipartFile> multipartFileList;

	private String realUrl;

	/**
	 * 在职状态 0：在职 1：离职
	 */
	private Boolean entryType;

	private List<String> roleCode;

	private String ids;

	private MultipartFile file;

	/**
	 * 角色多个Id
	 */
	private String roleIdss;

	/**
	 * 拥有视频点权限id 多个逗号隔开
	 */
	private String videoPoints;


	private String userType;

	/**
	 * 登录次数
	 */
	private Integer loginNum;

	/**
	 * 允许登录时间
	 */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private LocalDateTime loginTime;

	private String showMsg;//显示内容

	/**
	 * 组织账号权限(0:开启,1:关闭)
	 */
	private Integer accountPermission;

	/**
	 * websocket地址
	 */
	private String webSocketUrl;
}
